//#define _CRT_SECURE_NO_WARNINGS
//#include<iostream>
//#include<string>
//#include<map>
//using namespace std;
//const int N = 1e6;
//int tre[N][26], nac[N], num = 0;
//void insert(string s) {
//	int p = 0;
//	for (int i = 0; i < s.size(); i++) {
//		int t = s[i] - '0';
//		if (!tre[p][t])
//			tre[p][t] = ++num;
//		p = tre[p][t];
//		nac[p]++;
//	}
//	
//}
//
//int find(string s) {
//	int p = 0;
//	for (int i = 0; i < s.size(); i++) {
//		int t = s[i] - '0';
//		if (!tre[p][t])
//			return 0;
//		p = tre[p][t];
//
//	}
//	return nac[p];
//}
//
//int main() {
//	string s;
//	while (getline(cin, s) && (s[0] != '\0'))
//		insert(s);
//	while (cin >> s) {
//		cout << find(s) << endl;
//	}
//
//
//
//}